當遇到需要將兩張以上的圖做漸變的效果時可以使用TransitionDrawable,使用TransitionDrawable可以輕易地將A圖示逐漸變換成b圖示,或者是更多圖示的漸變效果。
首先要來取得圖片,圖片可以從drawable中取得,裡面可以是各種圖檔或者是自己新增的圖形。
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#458EA0" />
<corners android:radius="0dp"/>
</shape>
接下來宣告好自己需要的圖檔跟存放圖檔的view。
private ImageView icon, bg;
private Drawable waterfallDrawable, tornadoDrawable, whaleDrawable, waterfallBG, tornadoBG, whaleBG;
指定在layout相對應的物件。
icon = findViewById(R.id.my_icon);
bg = findViewById(R.id.my_background);
取得drawable下指定的檔案到先前宣告的物件下。
waterfallDrawable = getResources().getDrawable(R.drawable.waterfall);
whaleDrawable = getResources().getDrawable(R.drawable.whale);
tornadoDrawable = getResources().getDrawable(R.drawable.tornado);
waterfallBG = getResources().getDrawable(R.drawable.bg_waterfall);
tornadoBG = getResources().getDrawable(R.drawable.bg_tornado);
whaleBG = getResources().getDrawable(R.drawable.bg_whale);
接下來使用TransitionDrawable來改變漸變圖示
tdicon = new TransitionDrawable(new Drawable[]{waterfallDrawable, tornadoDrawable});
也可以使用兩個以上的圖示。
tdicon = new TransitionDrawable(new Drawable[]{waterfallDrawable, tornadoDrawable,waterfallBG});
最後再經過以下設置便能夠完成漸變的效果。
icon.setBackgroundDrawable(tdicon);
tdicon.setCrossFadeEnabled(true);
tdicon.startTransition(500);
setCrossFadeEnabled沒有設置的話,原先的圖示會依然顯示出來,所以如果要讓原本的圖片消失要記得設定。
startTransition漸變時間。
以上便是TransitionDrawable的基本使用方法。